package cn.edu.csust.coursecard.service;

import cn.edu.csust.coursecard.dao.entity.Post;
import cn.edu.csust.coursecard.dao.entity.PostSearchVo;
import cn.edu.csust.coursecard.dao.dto.IndexPost;
import cn.edu.csust.coursecard.dao.dto.PostDetail;
import cn.edu.csust.coursecard.dao.dto.Theme;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;
import java.util.Map;

public interface IPostService {
    
    /**
     * 编写帖子
     * @param post  帖子内容
     */
    IndexPost write(Post post,List<MultipartFile> images);
    
    
    /**
     * 获取帖子首页内容
     */
    Map<String,Object> getIndexPost(PostSearchVo postVo, Integer userId);
    
    //通过id获取帖子
    IndexPost getIndexPostByPrimaryKey(Integer postId);
    
    /**
     *点赞帖子
     */
    void likePost(Integer postId,Integer userId);
    
    
    /**
     * 收藏帖子
     */
    void enshrinePost(Integer userId, Integer postId);
    
    /**
     * 获取帖子详细信息
     * @param userId  用户id，如果用户登录了，id不为空，显示帖子是否被用户收藏或者点赞，
     *                如果用户未登录，id为空，用户收藏和点赞都为false
     */
    PostDetail getDetailPost(Integer postId, Integer userId);
    
    /**
     * 获取收藏的帖子
     */
    List<IndexPost> getEnshrinePost(Integer userId);
    
    /**
     * 通过用户id获取该用户的帖子
     */
    List<IndexPost> getSelfPost(Integer userId);
    
    /**
     * 删除帖子
     */
    void deletePost(Integer postId);
    
    /**
     * 获取标签
     * @return
     */
    List<Theme> getTheme();
    
    void refreshPostLikeNum();
    
    /**
     * 添加标签
     */
    void addTheme(Theme theme);
    
    /**
     * 删除标签
     */
    void deleteTheme(Integer themeId);
}
